package com.roc.producer.messageType;

import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;

import java.util.ArrayList;
import java.util.List;

/**
 * 批量消息-生产者
 *
 * @author Roker
 * @date 2025/07/06
 */
public class BatchMsgProducer {
    public static void main(String[] args) throws Exception {
        // 1.创建消息生产者，指定生产者组名
        DefaultMQProducer producer = new DefaultMQProducer("roc-producer-group");
        // 2.指定NameServer地址
        producer.setNamesrvAddr("127.0.0.1:9876");
        // 3.启动生产者
        producer.start();
        // 4. 构造批量消息：创建 List 存多条消息，Topic 都是 "TOPIC_BATCH"
        List<Message> messages = new ArrayList<>();
        messages.add(new Message("TOPIC_BATCH", "ROC-批量消息测试-0".getBytes()));
        messages.add(new Message("TOPIC_BATCH", "ROC-批量消息测试-1".getBytes()));
        messages.add(new Message("TOPIC_BATCH", "ROC-批量消息测试-2".getBytes()));
        messages.add(new Message("TOPIC_BATCH", "ROC-批量消息测试-3".getBytes()));
        // 5. 批量发送消息，返回结果
        SendResult sendResult = producer.send(messages);
        System.out.println("\n发送结果：" + sendResult);

        // 6. 关闭生产者（ 实际应用中，长连接场景不用频繁关闭 ）
        producer.shutdown();
    }

}
